package com.weiqiao.mall.repository.impl;

import com.mongodb.client.MongoCollection;
import com.weiqiao.base.dao.impl.BaseMongoDaoImpl;
import com.weiqiao.mall.repository.ISpecificationsRepository;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Description: 宝贝规格dao层实现类
 * @author: xujun
 * @Date: 2019/10/24 16:38
 */
@Repository("SpecificationsRepositoryImpl")
public class SpecificationsRepositoryImpl extends BaseMongoDaoImpl implements ISpecificationsRepository {

    /**
     * 连接名称
     */
    private final static String CONNECTION_NAME = "specs";


    /**
     * 保存宝贝规格
     *
     * @param document 实体转成json
     * @return boolean 返回布尔类型
     */
    @Override
    public boolean saveSpecifications(Document document) {
        return super.inSertDocument(CONNECTION_NAME, document);
    }

    /**
     * 统计宝贝规格总数
     *
     * @param filter 过滤条件
     * @return boolean 返回整型
     */
    @Override
    public int getSpecificationsCount(Bson filter) {
        MongoCollection<Document> dbCollection = getCollection(CONNECTION_NAME);
        return (int) dbCollection.count(filter);
    }

    /**
     * 更新宝贝标签
     *
     * @param filter   过滤条件
     * @param document 需要更新的字段
     * @param bool     是否增量
     * @return boolean 布尔类型
     */
    @Override
    public boolean updateSpecifications(Bson filter, Document document, Boolean bool) {
        return super.updateOne(CONNECTION_NAME, filter, document, false);
    }

    /**
     * 根据条件获取单条宝贝标签数据
     *
     * @param filter 过滤条件
     * @return String json类型字符串
     */
    @Override
    public String getSpecificationsJsonByFilter(Bson filter) {
        return super.findOne(CONNECTION_NAME, filter);
    }


    /**
     * 删除宝贝标签
     *
     * @param filter 过滤条件
     * @return boolean 返回布尔类型
     */
    @Override
    public boolean deleteSpecifications(Bson filter) {
        return super.deleteOne(CONNECTION_NAME, filter);
    }

    /**
     * 分页查询
     *
     * @param doc      查询条件
     * @param pageable 分页排序数据
     * @return
     */
    @Override
    public List<String> getSpecsList(Bson doc, Pageable pageable) {
        return super.getListAndPage(CONNECTION_NAME, doc, pageable);
    }
    @Override
    public List<String> getList(Bson doc) {
        return super.findFilter(CONNECTION_NAME, doc);
    }
}
